import App from './App.vue'
import { createApp } from 'vue'
import { initStore } from './store' // Store
import { initRouter } from './router' // Router
import '@styles/reset.scss' // 重置HTML样式
import '@styles/app.scss' // 全局样式
import '@styles/el-ui.scss' // 优化element样式
import '@styles/mobile.scss' // 移动端样式优化
import '@styles/change.scss' // 主题切换过渡优化
import '@styles/theme-animation.scss' // 主题切换动画
import '@styles/el-light.scss' // Element 自定义主题（亮色）
import '@styles/el-dark.scss' // Element 自定义主题（暗色）
import '@styles/dark.scss' // 系统主题
import '@styles/sys-custom.scss' // 系统自定义样式
import '@styles/vxe-table.scss' // vxe-table 样式
import '@icons/system/iconfont.js' // 系统彩色图标
import '@icons/system/iconfont.css' // 系统图标
import { setupErrorHandle } from '@/plugins/error-handle' // 全局错误处理
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import { setupGlobDirectives } from './directives'
import language from './locales'
import { lazyVxeTable, lazyVxeUI, lazyVxePlugin } from '@/components/ui/vxe-table'

import { ElInput, ElSwitch, ElRadio, ElButton, ElSelectV2, ElDatePicker } from 'element-plus'

document.addEventListener('touchstart', function () {}, { passive: false })

const app = createApp(App)
initStore(app)
initRouter(app)
setupGlobDirectives(app)

app.use(language)

setupErrorHandle(app)

// 按需引入vxe-table相关组件
app.use(lazyVxeTable).use(lazyVxeUI).use(lazyVxePlugin)

// 供plugin-render-element使用,h函数无法识别自动导入的组件
app.use(ElSwitch).use(ElRadio).use(ElInput).use(ElButton).use(ElSelectV2).use(ElDatePicker)

for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}
app.mount('#app')
